//
//  TBBLEBaseAction.h
//  TBSDK
//
//  Created by nexgo on 2017/10/27.
//  Copyright © 2017年 truth. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "TBErrorCode.h"
#import <CoreBluetooth/CoreBluetooth.h>

// 任务类型
typedef enum{
    TBBLEACTION_WRITECHACT,        // 写特征值
    TBBLEACTION_READCHACT,         // 读特征值
    TBBLEACTION_READRSSI,          // 读Rssi
    TBBLEACTION_ENCHARACTERNOTIFY  // 使能特征值监听
} TBBaseActionType;

// 任务状态
typedef enum{
    TBBLEACTION_WAITTING,    // 等待运行
    TBBLEACTION_RUNNING,         // 正在运行
    TBBLEACTION_DONE,            // 完成
    TBBLEACTION_FAIL,            // 失败
    TBBLEACTION_CANCEL,          // 被取消
} TBBaseActionStatus;

// 回调
@interface TBBLEBaseActionCB: NSObject

@property (nonatomic,copy) void(^ _Nullable onStart)(void);  // 开始执行任务
@property (nonatomic,copy) void(^ _Nullable onSuccess)(void);  // 执行任务成功
@property (nonatomic,copy) void(^ _Nullable onFail)(TBErrorCode*_Nonnull);  // 执行任务失败
@property (nonatomic,copy) void(^ _Nullable onCancel)(void);  // 执行被取消

@end

// 任务参数
@interface TBBLEBaseOption : NSObject

@property (nonatomic) int timeout;    // 超时时间(单位ms)，默认20
@property (nonatomic) int perLen;     // 每条数据的长度默认20
@property (nonatomic) int waitTime;   // 无响应写入方式，等待时间(单位ms)，默认20

@end

@interface TBBLEBaseAction : NSObject{

}

@property (nonatomic) TBBaseActionType actionType;        // 类型
@property (nonatomic) TBBaseActionStatus status;          // 状态
@property (nonatomic) TBBLEBaseOption* _Nullable option;  // 参数

@property (nonatomic) TBBLEBaseActionCB* _Nullable cb;  // 回调

- (instancetype _Nonnull )init:(TBBaseActionType)actionTypeTmp option:(TBBLEBaseOption*_Nullable)optionTmp;

@end




